import datetime
import time

'''
datetime主要包括4个类：
    1. datetime.time：时间类，只包含时、分、秒、微秒等时间信息。
    2. datetime.date：日期类，只包含年、月、日、星期等日期信息。
    3. datetime.datetime：日期时间类，包含以上两者的全部信息。
    4. datetime.timedelta：时间日期差值类，用来表示两个datetime之间的差值。
'''
# datetime.datetime类与字符串的转化
a_datetime_local = datetime.datetime.now()  # 获取datetime.datetime类型的本地时间
print(a_datetime_local)
a_datetime_utc = datetime.datetime.utcnow()  # 获取datetime.datetime类型的utc时间
print(a_datetime_utc)

# datetime.datetime类型转字符串
print(a_datetime_local.strftime("%Y-%m-%d, %H:%M:%S, %w"))
# datetime.datetime类型转字符串
print(a_datetime_utc.strftime("%Y-%m-%d, %H:%M:%S, %w"))

a_datetime = datetime.datetime.strptime("2016-11-15, 15:32:12, 2", "%Y-%m-%d, %H:%M:%S, %w")
print(a_datetime)

# datetime类型和时间戳、struct_time类型的相互转换
time_stamp = a_datetime_local.timestamp()  # datetime类型转时间戳
print(time_stamp)

a_datetime_local = datetime.datetime.fromtimestamp(time.time())  # 时间戳转datetime.datetime类型的本地时间
a_datetime_utc = datetime.datetime.utcfromtimestamp(time.time())  # 时间戳转datetime.datetime类型的utc时间
print(a_datetime_local, a_datetime_utc)

print(a_datetime_local.timetuple())  # datetime类型转struct_time类型
print(a_datetime_utc.utctimetuple())  # datetime类型转struct_time类型

# 关于timedelta，它是datetime中的一个对象，该对象表示两个时间的差值
# 构造函数：datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
print('关于timedelta的实例')
now = datetime.datetime.now()
nextDay = now + datetime.timedelta(days=1)  # 增加一天后的时间
nextSecond = now + datetime.timedelta(seconds=1)  # 增加一秒后的时间
span = now - nextDay  # 获取时间差对象
print(now)
print(nextDay)
print(nextSecond)
print(span.total_seconds())  # 获取时间差 以秒为单位
